const log4js = require('./log_config')
// 此处使用category的值
const resLog = log4js.getLogger('app')
// 此处使用category的值
const errorLog = log4js.getLogger('errorFile')

const log = {}
log.i = function (ctx, resTime) {
    if (ctx) {
        resLog.info(formatRes(ctx, resTime));
    }
}
log.e = function (ctx, error, resTime) {
    if (ctx && error) {
        errorLog.error(formatError(ctx, error, resTime));
    }
}

// 格式化响应日志
const formatRes = (ctx, resTime) => {
    let logText = new String()
    // // 响应日志开始
    // logText += "\n" + "*************** response log start ***************" + "\n";
    // 添加请求日志
    logText += formatReqLog(ctx.request, resTime)
    // 响应状态码
    logText += 'response：【time】 ' + resTime + ' 【status】' + ctx.status
    // 响应内容
    logText += ' 【body】 ' + JSON.stringify(ctx.body) + '\n'
    // // 响应日志结束
    // logText += "*************** response log end ***************" + "\n"
    return logText
}

// 格式化错误日志
const formatError = (ctx, err, resTime) => {
    let logText = new String()
    // // 错误信息开始
    // logText += "\n" + "*************** error log start ***************" + "\n";
    // 添加请求日志
    logText += formatReqLog(ctx.request, resTime)
    // 错误名称
    logText += 'error：【name】 ' + err.name
    // 错误信息
    logText += ' 【message】 ' + err.message
    // 错误详情
    logText += ' 【stack】 ' + err.stack + '\n'
    // //错误信息结束
    // logText += "*************** error log end ***************" + "\n";
    return logText
}

// 格式化请求日志
const formatReqLog = (req, resTime) => {
    let logText = new String()
    let method = req.method
    // // 访问方法
    // logText += 'request method: ' + method + '\n'
    // // 请求原始地址
    // logText += 'request originalUrl: ' + req.originalUrl + '\n'
    // // 客户端ip
    // logText += 'request client ip: ' + req.ip + '\n'
    // logText += '\n' + 'request：' + '\n'
    logText += '\n' + 'request：【method】 ' + method + ' 【originalUrl】 ' + req.originalUrl + ' 【client ip】 ' + req.ip
    // // 开始时间
    // let startTime
    // 请求参数
    if (method === 'GET') {
        logText += ' 【query】 ' + JSON.stringify(req.query) + '\n'
        // startTime = req.query.requestStartTime;
    } else {
        logText += ' 【body】 ' + JSON.stringify(req.body) + '\n'
        // startTime = req.body.requestStartTime;
    }
    // logText += 'response：' + '\n'
    // // 服务器响应时间
    // logText += "response time: " + resTime + "\n";
    return logText
}

module.exports = log